// 引入 axios
// 创建 axios 实例
// 拦截器
// 抛出实例
import axios from 'axios'

// 基础地址，超时时间   ===> 已完成
// 请求拦截器-统一注入token
// 响应拦截器-解构数据-处理异常
// baseURL 最好根据环境可以自己改变对应值 ===>
// 1.开发环境  /api
// 2.线上环境  /prod-api
// 如何来解决 ===> 环境变量的配置
// 配置 ===>  环境文件来配置 ===> 自定义 VUE_APP_BASE_自定义的字段
//           NODE_ENV ===> 默认值 就是当前的环境 ===> 表示环境的变量
// 取值 ===> process.env ===> node 提供的一个变量

const request = axios.create({
  baseURL: '/free',
  timeout: 5000
})

request.interceptors.request.use(
  (config) => {
    return config
  },
  (err) => {
    return Promise.reject(err)
  }
)

request.interceptors.response.use(
  (response) => {
    // 响应拦截器-解构数据-处理异常
    // 接口状态 200 ===>
    const { message, data } = response.data
    if (data) {
      return data
    } else {
      // 提示
      // Promise.reject
      return Promise.reject(new Error(message))
    }

    // return response.data // axios 默认给我包一层data
  },
  (err) => {
    console.log(err)
    // 对于其他错误 ==> 简单消息提示
    return Promise.reject(err)
  }
)

export default request // 导出axios实例
